#include <iostream>
#include <cstdio>
#include <algorithm>
#include <set>
#include <map>
#include <vector>
#include <cmath>
#include <cstring>
#include <string>
#include <iomanip>
#include <climits>
#include <unordered_map>
#include <unordered_set>
#define x first 
#define y second  
using namespace std;
typedef long long ll;
using namespace std;
char a[200005],b[200005];
int main() {
  ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    ll n,m,k,suma=0,sumb=0,mx1=0,min1=1e8,mx2=0,min2=1e8;
  cin>>n>>m>>k;
  cin>>a;
  cin>>b;
  for(int i=0;i<k;i++){
    if(a[i]=='1')suma++;
    if(b[i]=='1')sumb++;
  }
  for(int i=k;i<=n;i++){
    if(a[i]=='1')suma++;
    if(a[i-k]=='1')suma--;
    mx1=max(mx1,suma);
    min1=min(min1,suma);
  }
  for(int i=k;i<=m;i++){
    if(b[i]=='1')sumb++;
    if(b[i-k]=='1')sumb--;
    mx2=max(mx2,sumb);
    min2=min(min2,sumb);
  }
  ll ans=max(k*(mx1+min2)-2*(mx1*min2),k*(mx2+min1)-2*(mx2*min1));
  ans=max(ans,k*(min1+min2)-2*(min1*min2));
  ans=max(ans,k*(mx1+mx2)-2*(mx1*mx2));
  cout<<ans;
  return 0;
}